//
//  Extension+NSDate.swift
//  HansWeibo
//
//  Created by Hans on 16/8/15.
//  Copyright © 2016年 Hans. All rights reserved.
//


/*
    使用NSDateFormatter() 和 NSCalendar.currentCalendar() 
    注意问题
        他们的创建和销毁对iOS的性能影响很大  所以不要重复的创建和销毁
    解决办法
        创建一个全局的(Swift中的做法) 
        使用单例(OC中的做法)
 */


import UIKit
// 时间格式化
private let df = NSDateFormatter()

// 日历类
private let calendar = NSCalendar.currentCalendar()

extension NSDate {
    // 计算微博日期
    class func getSinaDate(created_at: String) -> NSDate {
        
        // 设置格式
        df.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        // 本地化
        df.locale = NSLocale(localeIdentifier: "en_US")
        
        // 微博时间
        let sinaDate = df.dateFromString(created_at)!
        
        return sinaDate
    }
    
    var sinaDateStr: String?{
        // 是否是今年
        let isThisYear = sinaIsThisYear(self)
        if isThisYear {
            // 今年
            
            // 如果是今天
            if calendar.isDateInToday(self){
                // 秒数  当前时间和微博时间  求差
                let s = Int(NSDate().timeIntervalSinceDate(self))
                if s < 60 {
                    return "刚刚"
                }else if s > 60 && s < 3600{
                    return "\(s/60)分钟前"
                }else{
                    return "\(s/3600)小时前"
                }
                
            }else if calendar.isDateInYesterday(self){
                // 如果是昨天
                df.dateFormat = "昨天 HH:mm"
                
            }else{
                // 其他
                df.dateFormat = "MM月dd日 HH:mm"
                
            }
        }else {
            // 不是今年
            // 制定格式
            df.dateFormat = "yyyy年MM月dd日 HH:mm"
            
        }
        return df.stringFromDate(self)
    }
    // 判断是否是今年
    func sinaIsThisYear(sinaDate: NSDate) -> Bool{
        // 设置格式
        df.dateFormat = "yyyy"
        // 本地化
        df.locale = NSLocale(localeIdentifier: "en_US")
        // 微博时间字符串
        let sinaTimeStr = df.stringFromDate(sinaDate)
        // 当前时间
        let currentTimeStr = df.stringFromDate(NSDate())
        
        return sinaTimeStr == currentTimeStr
    }
    
}
    